package com.stephen.easyexcel.write;

import com.alibaba.excel.EasyExcel;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created by stephen on 2021-03-09 21:16 .
 * Description: EasyExcel导出
 * EasyExcel底层也是poi,在其基础上做的优化
 */
public class EasyWriteTest {
    static String PATH = "D:\\IDEA_Projects\\java-excel-demo\\poi\\src\\main\\java\\com\\stephen\\";

    // 需要写入Excel的数据
    private List<DemoData> data() {
        List<DemoData> list = new ArrayList<DemoData>();
        for (int i = 0; i < 10; i++) {
            DemoData data = new DemoData();
            data.setString("字符串" + i);
            data.setDate(new Date());
            data.setDoubleData(0.56);
            list.add(data);
        }
        return list;
    }

    // 最简单的写入,会自动关闭流
    @Test
    public void simpleWriteTest() {
        String fileName = PATH + "easyExcel模板.xlsx";
        // 情况一: 导出全部字段
        // EasyExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data());

        // 情况二: 指定要忽略的字段
        // Set<String> excludeColumnFieldNames = new HashSet<String>();
        // excludeColumnFieldNames.add("date");
        // EasyExcel.write(fileName, DemoData.class).excludeColumnFiledNames(excludeColumnFieldNames).sheet("模板").doWrite(data());

        // 情况三: 复杂的头写入
        // 在实体中贴@ExcelProperty注解来确定层级关系
        EasyExcel.write(fileName, ComplexHeadData.class).sheet("模板").doWrite(data());

        // 情况四: 日期、数字或自定义格式转换
        // EasyExcel.write(fileName,ConverterData.class).sheet("模板").doWrite(data());

        // 情况五: 自定义单元格样式
        // WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        // // 设置头背景颜色
        // headWriteCellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
        // // 设置头字体
        // WriteFont headWriteFont = new WriteFont();
        // headWriteFont.setFontHeightInPoints((short)13);
        // headWriteFont.setBold(true);
        // headWriteCellStyle.setWriteFont(headWriteFont);
        // // 设置头居中
        // headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        //
        // // 内容策略
        // WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        // // 内容水平居中
        // contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        // // 样式汇总
        // HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
        // // 写入样式
        // EasyExcel.write(fileName,ConverterData.class).registerWriteHandler(horizontalCellStyleStrategy).sheet("模板").doWrite(data());
    }


}
